import chain.Handler;
import chain.PaymentRequest;
import chain.node.BalanceChecker;
import chain.node.Logger;
import chain.node.RegionChecker;

public class Main {
    public static void main(String[] args) {
        // 创建三个处理节点, 功能分别是: 检查用户支付区域, 用户余额是否足够, 记录支付日志
        Handler regionChecker = new RegionChecker();
        Handler balanceChecker = new BalanceChecker();
        Handler logger = new Logger();

        // 设置责任链, 先检查用户区域, 再检测用户余额, 最后记录日志
        regionChecker.setNextHandler(balanceChecker);
        balanceChecker.setNextHandler(logger);

        // 创建支付请求, 并处理
        PaymentRequest request = new PaymentRequest("CN", 100);
        try {
            regionChecker.handlePaymentRequest(request);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }

    }
}